In recent years, in the same way as the conventional turbo codes, LDPC (low density parity check) codes have begun to come into attention as error correction codes having superior properties close to the Shannon limit.
In particular, it is known that the decoding performance of these LDPC codes is equivalent to that of said turbo codes or exhibits superior characteristics to turbo codes when the code lengths are longer. For example, when the code lengths are tens of thousands of bits or more, sometimes the decoding performance of the turbo codes currently employed in third generation mobile phone systems is exceeded.
As LDPC codes, at the present time, binary type LDPC codes and non-binary type LDPC codes are known. If using the latter non-binary LDPC codes, compared with when using the former binary LDPC codes, there is the defect that the amount of processing increases. However, while there is this defect, if using the non-binary LDPC codes, even if said code lengths become shorter, the decoding performance is expected to be improved compared with when using binary LDPC codes.
Therefore, if the above defect can be eliminated by future technical development, it can be expected that the range of application of non-binary LDPC codes will expand. Therefore, if considering the method of constructing non-binary parity check matrices defining such non-binary LDPC codes, there will be the following problems.
When constructing a binary parity check matrix defining a binary code, it is sufficient to just determine at what positions in the matrix (what row and what column) to arrange the elements 1, that is, the non-zero elements, in a matrix comprised of the elements 0 and elements 1.
However, when constructing a non-binary parity check matrix defining the non-binary code, it is not sufficient to just determine the positions of said non-zero elements. It is necessary to also determine the values of the non-binary elements constituted by the n-ary elements (1, 2, 3, 4 . . . )
If studying the method for determining the values of the n-ary elements, in the past, there has been no clear standard or rule for the method of determination. In actuality, the general practice has been to randomly select the values of the n-ary elements (random selection method). For this reason, there was the problem that the performance ended up fluctuating in accordance with the selected pattern and stable, good performance could not be obtained.